package com.itheima.thread.communication.demo03;

// 消费者线程的任务类
public class CustomerThread implements Runnable {

    private Box box ;
    public CustomerThread(Box box) {            // 定义接收奶箱的构造方法
        this.box = box ;
    }

    @Override
    public void run() {

        // 创建奶箱
        // Box box = new Box() ;

        // 消费者线程需要不断的消费奶
        while(true) {

            synchronized (box) {

                // 判断奶箱中是否有奶，如果没有奶进行等待
                if(!box.isFlag()) {
                    try {
                        box.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }

                // 对奶箱中的奶进行消费
                System.out.println(box.getMilkType() + "----" + box.getAmount());

                // 更改flag的值为false
                box.setFlag(false);

                // 通知生产者线程去生成奶
                box.notify();

                /**
                 * IllegalMonitorStateException: 非法的监视器异常，主要这里所说的监视器就是我们synchronized同步代码块中的对象
                 * 在调用wait或者notify方法的时候需要通过synchronized同步代码块中的对象进行调用
                 */

            }

        }

    }

}
